package com.situ.mall.common.util;

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.HashMap;
import java.util.Map;

public class SendSMSUtil {

    //发送短信工具类

        //创建一个发送短信的Client
        public static Client createClient() throws Exception {
            Config config = new Config()
                    // 必填，您的 AccessKey ID
                    .setAccessKeyId("LTAI5tR1HwUJ58fJkPMCyVx7")
                    // 必填，您的 AccessKey Secret
                    .setAccessKeySecret("i9rs8xIk7FD2cv0fJbmkLSfwJVXHeL");//阿里云账号才有的 刘凯的视频里有
            // 访问的域名
            config.endpoint = "dysmsapi.aliyuncs.com";
            return new Client(config);
        }

        public static void sendMessage(String templateCode, String tel, String content) {
            // 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            // 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用，仅供参考，建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378657.html
            try {
                Client client = createClient();
                Map<String, String> map = new HashMap<>();
                map.put("code", content);
                SendSmsRequest sendSmsRequest = new SendSmsRequest()
                        .setPhoneNumbers(tel)
                        .setSignName("王栋的博客")
                        .setTemplateCode(templateCode)
                    .setTemplateParam(new ObjectMapper().writeValueAsString(map));
                // 复制代码运行请自行打印 API 的返回值
                SendSmsResponse response = client.sendSmsWithOptions(sendSmsRequest, new com.aliyun.teautil.models.RuntimeOptions());
                System.out.println(response);
            } catch (Exception _error) {
                System.out.println("发送短信失败");
                _error.printStackTrace();
            }

        }


}
